using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._AviationTools._Airports._DataExchange
{
    /// <summary>
    /// <para>Export FAA 18B Shapefiles</para>
    /// <para>Exports one or more FAA Advisory Circular 150/5300-18B compliant shapefiles from a geodatabase that contains the ArcGIS Aviation Airports schema.</para>
    /// <para>从包含 ArcGIS Aviation Airports 方案的地理数据库中导出一个或多个符合 FAA Advisory Circular 150/5300-18B 标准的 shapefile。</para>
    /// </summary>    
    [DisplayName("Export FAA 18B Shapefiles")]
    public class ExportFAA18BShapefiles : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public ExportFAA18BShapefiles()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_in_workspace">
        /// <para>Input Airport Geodatabase</para>
        /// <para>The workspace that contains the airport data.</para>
        /// <para>包含机场数据的工作区。</para>
        /// </param>
        /// <param name="_target_folder">
        /// <para>Target Folder</para>
        /// <para>The folder to which shapefiles are written.</para>
        /// <para>将 shapefile 写入的文件夹。</para>
        /// </param>
        public ExportFAA18BShapefiles(object _in_workspace, object _target_folder)
        {
            this._in_workspace = _in_workspace;
            this._target_folder = _target_folder;
        }
        public override string ToolboxName => "Aviation Tools";

        public override string ToolName => "Export FAA 18B Shapefiles";

        public override string CallName => "aviation.ExportFAA18BShapefiles";

        public override List<string> AcceptEnvironments => ["workspace"];

        public override object[] ParameterInfo => [_in_workspace, _target_folder, _in_features, _output_folder];

        /// <summary>
        /// <para>Input Airport Geodatabase</para>
        /// <para>The workspace that contains the airport data.</para>
        /// <para>包含机场数据的工作区。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Airport Geodatabase")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _in_workspace { get; set; }


        /// <summary>
        /// <para>Target Folder</para>
        /// <para>The folder to which shapefiles are written.</para>
        /// <para>将 shapefile 写入的文件夹。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Target Folder")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _target_folder { get; set; }


        /// <summary>
        /// <para>Input Feature Class</para>
        /// <para>A list of feature classes to export to shapefiles. If this parameter is not set, all feature classes in the input workspace are exported to shapefiles.</para>
        /// <para>要导出到 shapefile 的要素类列表。如果未设置此参数，则输入工作空间中的所有要素类都将导出到 shapefile。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Feature Class")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public List<object> _in_features { get; set; } = null;


        /// <summary>
        /// <para>Output Folder</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Folder")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _output_folder { get; set; }


        public ExportFAA18BShapefiles SetEnv(object workspace = null)
        {
            base.SetEnv(workspace: workspace);
            return this;
        }

    }

}